{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Untitled8.ipynb",
      "version": "0.3.2",
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "JdxU1mDFL774",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Description: This program uses Convolutional Neural Networks (CNN) \n",
        "#              to classify handwritten digits as numbers 0 - 9"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lwMm2jdjMGox",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#import the libraries\n",
        "from keras.models import Sequential\n",
        "from keras.layers import Dense, Conv2D, Flatten\n",
        "from keras.datasets import mnist\n",
        "from keras.utils import to_categorical\n",
        "import matplotlib.pyplot as plt\n",
        "import numpy as np"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "k2cVbRu3MceW",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Load the data and split it into train and test sets\n",
        "(X_train,y_train), (X_test, y_test) = mnist.load_data()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fQj6JKgxMs4-",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        },
        "outputId": "5ae9b494-e1f5-4437-abf8-4c7c4945066d"
      },
      "source": [
        "#Get the image shape\n",
        "print(X_train.shape)#60000 rows of 28x28 pixel images with a depth=1 which signifies the images are gray scale (8 bit integers giving 256 possible shades of gray from black to white)\n",
        "print(X_test.shape)#10000 rows of 28x28 pixel images with a depth=1 which signifies the images are gray scale (8 bit integers giving 256 possible shades of gray from black to white)"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(60000, 28, 28)\n",
            "(10000, 28, 28)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oqKxI7ffM6OT",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "cd7d83df-11fc-426c-c1b4-9226000568af"
      },
      "source": [
        "#Take a look at the first image (at index=0) in the training data set as a numpy array, This shows the image as a series of pixel values\n",
        "X_train[0]"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,\n",
              "         18,  18,  18, 126, 136, 175,  26, 166, 255, 247, 127,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,  30,  36,  94, 154, 170,\n",
              "        253, 253, 253, 253, 253, 225, 172, 253, 242, 195,  64,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,  49, 238, 253, 253, 253, 253,\n",
              "        253, 253, 253, 253, 251,  93,  82,  82,  56,  39,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,  18, 219, 253, 253, 253, 253,\n",
              "        253, 198, 182, 247, 241,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,  80, 156, 107, 253, 253,\n",
              "        205,  11,   0,  43, 154,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,  14,   1, 154, 253,\n",
              "         90,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 139, 253,\n",
              "        190,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11, 190,\n",
              "        253,  70,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  35,\n",
              "        241, 225, 160, 108,   1,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "         81, 240, 253, 253, 119,  25,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,  45, 186, 253, 253, 150,  27,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,  16,  93, 252, 253, 187,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0, 249, 253, 249,  64,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,  46, 130, 183, 253, 253, 207,   2,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,\n",
              "        148, 229, 253, 253, 253, 250, 182,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 114, 221,\n",
              "        253, 253, 253, 253, 201,  78,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,  23,  66, 213, 253, 253,\n",
              "        253, 253, 198,  81,   2,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,  18, 171, 219, 253, 253, 253, 253,\n",
              "        195,  80,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,  55, 172, 226, 253, 253, 253, 253, 244, 133,\n",
              "         11,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0, 136, 253, 253, 253, 212, 135, 132,  16,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0],\n",
              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
              "          0,   0]], dtype=uint8)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3IJJFs1INMbg",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "1ef37709-1a34-44b4-d197-0ed499407cb5"
      },
      "source": [
        "#Print the image label\n",
        "y_train[0]"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "5"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2RLcIND2NRq8",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 287
        },
        "outputId": "ff4a1276-7901-4d23-f724-2ea9c300732e"
      },
      "source": [
        "#Show the image as a picture\n",
        "plt.imshow(X_train[0])"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7f906e73d5f8>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 6
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Duw_KBUNNbcO",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Reshape the data to fit the model\n",
        "X_train = X_train.reshape(60000, 28,28,1)\n",
        "X_test = X_test.reshape(10000, 28, 28, 1)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lWgkkP9BNwWZ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "db1b5f49-2f54-4a9e-9ce0-0e480d708084"
      },
      "source": [
        "#One-Hot Encode target column (Y-Data sets) : Convert the labels into a set of 10 numbers to input into the neural network\n",
        "y_train_one_hot = to_categorical(y_train)\n",
        "y_test_one_hot = to_categorical(y_test)\n",
        "\n",
        "#Print the new label\n",
        "print(y_train_one_hot[0])"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eyso3JIlOR5-",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Build the CNN model\n",
        "model = Sequential()\n",
        "# add model layers\n",
        "model.add(Conv2D(64, kernel_size=3, activation='relu', input_shape=(28,28,1)))#Convolution layer to extract features from the input image, and create 64 channels of ReLu 3x3 convolved features (NOTE: Rectifier Linear Unit aka (ReLu))\n",
        "model.add(Conv2D(32, kernel_size=3, activation='relu'))#Convolution layer to extract features from the input image, and create 32 channels of ReLu 3x3 convolved features\n",
        "model.add(Flatten())#Flattening  layer makes the image a linear array or 1D Array or 1D Vector to feed into and connect with the neural network\n",
        "model.add(Dense(10, activation='softmax'))# The neural network last layer with 10 neurons and activation function softmax, 10 neurons used because we have 10 labels"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fhRjMnImO43w",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 107
        },
        "outputId": "5771522d-ec91-47a8-9bad-ae40c40ae2c2"
      },
      "source": [
        "#Compile the model\n",
        "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "W0712 17:30:11.366239 140259247986560 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
            "\n",
            "W0712 17:30:11.403307 140259247986560 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
            "\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "clc7qn8CPEwm",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 245
        },
        "outputId": "aa414e52-5a5c-44ae-e13b-041fbb412374"
      },
      "source": [
        "#Train the model\n",
        "#Batch: Total number of training examples present in a single batch (None = default 32)\n",
        "#Epoch:The number of iterations when an ENTIRE dataset is passed forward and backward through the neural network only ONCE.\n",
        "#Fit: Another word for train\n",
        "hist = model.fit(X_train, y_train_one_hot, validation_data=(X_test, y_test_one_hot), epochs=3)"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "W0712 17:31:56.019908 140259247986560 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
            "W0712 17:31:56.088547 140259247986560 deprecation_wrapper.py:119] From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
            "\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Train on 60000 samples, validate on 10000 samples\n",
            "Epoch 1/3\n",
            "60000/60000 [==============================] - 200s 3ms/step - loss: 1.4287 - acc: 0.8797 - val_loss: 0.0900 - val_acc: 0.9715\n",
            "Epoch 2/3\n",
            "60000/60000 [==============================] - 200s 3ms/step - loss: 0.0659 - acc: 0.9799 - val_loss: 0.0762 - val_acc: 0.9758\n",
            "Epoch 3/3\n",
            "60000/60000 [==============================] - 201s 3ms/step - loss: 0.0431 - acc: 0.9859 - val_loss: 0.0783 - val_acc: 0.9768\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8jXr3pZ2R9nC",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        },
        "outputId": "6b2e9737-4e25-471b-b39f-23dee79863c1"
      },
      "source": [
        "#Visualize the models accuracy\n",
        "plt.plot(hist.history['acc'])\n",
        "plt.plot(hist.history['val_acc'])\n",
        "plt.title('Model Accuracy')\n",
        "plt.ylabel('Accuracy')\n",
        "plt.xlabel('Epoch')\n",
        "plt.legend(['Train', 'Val'], loc='upper left')\n",
        "plt.show()"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8FPX9x/HXJzchCQECqNwKyqEo\nkOLZ4tFWtFXqVUURtSpqq7W1tsVqbWu1Wmt/ta22FuoVPFDxbj1qFbVWrSRcCsipQAAhHOGGXJ/f\nHzvBJSZkgWwmu3k/H499MPOd78x+drJ8PzPf7+yMuTsiIiK7kxJ2ACIi0vIpWYiISKOULEREpFFK\nFiIi0iglCxERaZSShYiINErJQlo1M+tlZm5maTHUvdjM3mmOuERaGiULSRhm9qmZVZhZQZ3y6UGD\n3yucyHaJJcfMNpvZy2HHItKUlCwk0XwCjKqdMbPDgOzwwvmCs4AdwNfMbL/mfONYzo5E9paShSSa\nicCYqPmLgKLoCmbWzsyKzKzMzJaY2U1mlhIsSzWzu8xsjZktBr5Rz7r3m9lKM1tuZreaWeoexHcR\ncB8wCxhdZ9vdzeyZIK61ZnZP1LLLzWyumW0yszlmNiQodzPrE1XvITO7NZg+3sxKzeynZvYZ8KCZ\ntTezfwTvsT6Y7ha1fgcze9DMVgTLnwvKPzKz06LqpQf7aPAefHZJYkoWkmjeB/LMrH/QiJ8HPFKn\nzp+BdsCBwHAiyeWSYNnlwDeBwUAhcHaddR8CqoA+QZ2vA5fFEpiZ9QSOBx4NXmOilqUC/wCWAL2A\nrsCkYNk5wC+D+nnA6cDaWN4T2A/oAPQExhL5P/1gMN8D2AbcE1V/IpEzsYFAZ+APQXkRuya3U4GV\n7j49xjgk2bm7XnolxAv4FPgqcBNwOzACeA1IA5xII5wKVAADota7AngzmH4DuDJq2deDddOALkS6\nkNpELR8FTAmmLwbe2U18NwEzgumuQDUwOJg/GigD0upZ71Xg2ga26UCfqPmHgFuD6eODz5q1m5iO\nANYH0/sDNUD7euodAGwC8oL5ycBPwv6b69VyXurjlEQ0EXgb6E2dLiigAEgncgRfawmRxhsijeKy\nOstq9QzWXWlmtWUpdervzhhgAoC7Lzezt4h0S00HugNL3L2qnvW6A4tifI+6ytx9e+2MmWUTOVsY\nAbQPinODM5vuwDp3X193I+6+wsz+C5xlZs8CpwDX7mVMkoTUDSUJx92XEBnoPhV4ps7iNUAlkYa/\nVg9geTC9kkijGb2s1jIiZxYF7p4fvPLcfWBjMZnZMUBf4AYz+ywYQzgSOD8YeF4G9GhgEHoZcFAD\nm97KrgP4dQfN6942+kfAIcCR7p4HfKU2xOB9OphZfgPv9TCRrqhzgPfcfXkD9aQVUrKQRHUpcKK7\nb4kudPdq4EngNjPLDcYRruPzcY0nge+bWTczaw+Mi1p3JfAv4PdmlmdmKWZ2kJkNjyGei4h0iQ0g\n0vVzBHAo0IbIUfoHRBLVHWbW1syyzOzYYN2/A9eb2VCL6BPEDTCDSMJJNbMRRMZgdieXyDhFuZl1\nAH5R5/O9DPwlGAhPN7OvRK37HDCEyBlF3TM2aeWULCQhufsidy9uYPE1wBZgMfAO8BjwQLBsApEx\ngpnANL54ZjIGyADmAOuJ9N3vv7tYzCwL+DbwZ3f/LOr1CZEus4uCJHYakYHzpUApcG7wWZ4Cbgvi\n3ESk0e4QbP7aYL1y4IJg2e7cTSRBrSFyMcArdZZfSOTM62NgNfCD2gXuvg14mkj3Xt39Iq2cuevh\nRyISYWY3Awe7++hGK0urogFuEQEiv8Eg0r13YdixSMujbigRwcwuJzIA/rK7vx12PNLyqBtKREQa\npTMLERFpVNKMWRQUFHivXr3CDkNEJKGUlJSscfdOjdVLmmTRq1cviosbupJSRETqY2ZLGq+lbigR\nEYmBkoWIiDRKyUJERBqVNGMW9amsrKS0tJTt27c3XjlJZGVl0a1bN9LT08MORUSSSFIni9LSUnJz\nc+nVqxdRt5xOWu7O2rVrKS0tpXfv3mGHIyJJJKm7obZv307Hjh1bRaIAMDM6duzYqs6kRKR5JHWy\nAFpNoqjV2j6viDSPpO6GEhFJBu7O9soa1m+toHxrJeVbKyjfVrlzvn12Bucf2aPxDe0DJYs4Wrt2\nLSeddBIAn332GampqXTqFPmh5AcffEBGRkaj27jkkksYN24chxxySFxjFZHmsb2ymg3bKinfWllv\n479hl/JKyrdVsH5rJRVVNQ1uc0iPfCWLRNaxY0dmzJgBwC9/+UtycnK4/vrrd6lT+zD0lJT6ewQf\nfPDBuMcpInuuoqomaPSDhn5L5N/yoKFfv7WSDdsqWL+lcpfybZXVDW4zIzWF/Oz04JVBz47ZHJGd\nv3M+Pzud9tnptGuTQfu26eS3iZRlpafG/fMqWYRg4cKFnH766QwePJjp06fz2muv8atf/Ypp06ax\nbds2zj33XG6++WYAjjvuOO655x4OPfRQCgoKuPLKK3n55ZfJzs7m+eefp3PnziF/GpHEVlUdNPp1\nGvryrRVs2FbPUf6WSjZsq2TzjqoGt5mWYp838G3S6ZrfhoEH5NE+qtHPb5MRafiz02kflLVJT22x\n446tJln86sXZzFmxsUm3OeCAPH5x2sC9Wvfjjz+mqKiIwsJCAO644w46dOhAVVUVJ5xwAmeffTYD\nBgzYZZ0NGzYwfPhw7rjjDq677joeeOABxo0bV9/mRVqdmhpn4/ao7p26R/lbI905u5ZXsGl7w41+\nirGzwW+XnU7n3CwO7py761F+dqTRrz3Kz89OJyczrcU2+nur1SSLluaggw7amSgAHn/8ce6//36q\nqqpYsWIFc+bM+UKyaNOmDaeccgoAQ4cO5T//+U+zxizSHNydTTuqKN/yeX99edTR/fo6R/y10xu2\nVdLQ43nMIC/r8+6d9tkZHFjQNuooP532bTNo1+bzo/z87AxyM9NISUmuRn9vtZpksbdnAPHStm3b\nndMLFizgj3/8Ix988AH5+fmMHj263t9KRA+Ip6amUlXV8BGRSNjcnS0V1bs09LWN/86j/HoGd8u3\nVVJd0/BD2XIz08iP6q/v3iE7OLKPOsqP6gJqn51BXpt0UtXo75NWkyxaso0bN5Kbm0teXh4rV67k\n1VdfZcSIEWGHJbLTtorqnf315dvqOcpvYHC3srrhRj87I5X22cHRfNt0+u+Xt7MbZ2d51FF+fnY6\n7dqkk56a9D8Pa5GULFqAIUOGMGDAAPr160fPnj059thjww5JktSOqupdGvry2it2oo/y6+nq2bGb\nyzaz0lN26a/v0znnC0f27aK6emr7/zPT4n8FjzSduD6D28xGAH8EUoG/u/sddZb3BB4AOgHrgNHu\nXhosuxP4BpFfmb8GXOu7CbawsNDrPvxo7ty59O/fv+k+UIJorZ+7NamsrvlCQ7/LNfoNDO7u7rLN\n9FQL+vN3HaytbezbB43/54O7zXfZpsSPmZW4e2Fj9eJ2ZmFmqcC9wNeAUmCqmb3g7nOiqt0FFLn7\nw2Z2InA7cKGZHQMcCwwK6r0DDAfejFe8ImGoqq5h4/aqXX+cFXVkX99RfvnW2C7brO3G6ZqfxcAD\n8hoYxP38DCA7o+Vetinhi2c31DBgobsvBjCzScBIIDpZDACuC6anAM8F0w5kARmAAenAqjjGKhI3\n/5i1gqmfrAsGcaMHdyvY2Mhlm+2iunE65WRycOfcXa7Lj+7qSebLNiV88UwWXYFlUfOlwJF16swE\nziTSVXUGkGtmHd39PTObAqwkkizucfe5dd/AzMYCYwF69IjvT91F9sbzM5Zz7aQZ5Gam0SHn826c\nXgVtowZxo36oFdUNlJulyzal5Qh7gPt64B4zuxh4G1gOVJtZH6A/0C2o95qZfdndd/lhgbuPB8ZD\nZMyi2aIWicGHpRv4yeRZDOvVgUcuO5KMNF3FI4krnsliOdA9ar5bULaTu68gcmaBmeUAZ7l7uZld\nDrzv7puDZS8DRwP6FZokhLJNOxg7sZiCnEz+MnqIEoUkvHh+g6cCfc2st5llAOcBL0RXMLMCM6uN\n4QYiV0YBLAWGm1mamaUTGdz+QjeUSEu0o6qaqx4pYf3WCv524VAKcjLDDklkn8UtWbh7FXA18CqR\nhv5Jd59tZreY2elBteOBeWY2H+gC3BaUTwYWAR8SGdeY6e4vxivWeDrhhBN49dVXdym7++67ueqq\nqxpcJycnJ95hSZy4O794fjbFS9bzu7MP59Cu7cIOSaRJxHXMwt1fAl6qU3Zz1PRkIomh7nrVwBXx\njK25jBo1ikmTJnHyySfvLJs0aRJ33nlniFFJvEx8fwmTpi7jeyccxGmHHxB2OFJXTQ14NdRUB/9W\nBdM1UWVR/9ZXtkvdqqjp+rZdtyyqbk3VF8v2NrYOB8JJP4/rrgt7gDvpnX322dx0001UVFSQkZHB\np59+yooVKxg8eDAnnXQS69evp7KykltvvZWRI0eGHa7sg3cXreFXL87hq/0786OvNfHDqtxjbKCC\n5fU2MPU1UA01fvWt3xSNX0PrN7DNXT5TQ5+3vgY9um7U/koUKWlgqZCSGvyb8vn8zmVRZc2g9SSL\nl8fBZx827Tb3OwxOuWO3VTp06MCwYcN4+eWXGTlyJJMmTeLb3/42bdq04dlnnyUvL481a9Zw1FFH\ncfrpp+v6+JbKHSq2QMVm2LHp81cwv379Oorf+pBbcio5p307Up5/ACpq622G6h371viRIBf77dLA\nRTV0u2v8LGgAv1AWlKdl1lk/5Yt16t1mbd20+mPa+b4NxVS77ZQYP1Pd2NLqj3d3n7d22y1Q60kW\nIartiqpNFvfffz/uzs9+9jPefvttUlJSWL58OatWrWK//fYLO9zk0UgD/8X5zbBj467ztdMVmyNH\n2w1oD3wf8MpUbE4OZOZBRg5k5kJWHqRm7tpw7K7x29lQ1VNWb+O3B41nvdtsqPHck8YvKNfBTtJq\nPcmikTOAeBo5ciQ//OEPmTZtGlu3bmXo0KE89NBDlJWVUVJSQnp6Or169ar3tuStTlM08NHLYzki\nt9RIo56ZG9XAt4N23SAjKM/MiVqet3O+Jr0tv3xlKa8s3ML/XXgcx/XvrgZTklLrSRYhysnJ4YQT\nTuA73/kOo0aNAiJPvevcuTPp6elMmTKFJUuWhBzlPqht4Hc20ht3PSqPdwNf24hn5cfUwO9MCLWv\ntKy9buD//O8FFC1I46ZvHMVxA3QXAUleShbNZNSoUZxxxhlMmjQJgAsuuIDTTjuNww47jMLCQvr1\n69e8ATXUwNc9im+uBj4zt55Gvm6D3zQNfFN55aPP+MO/53PmkK5celzvUGMRiTcli2byrW99i+g7\nrBcUFPDee+/VW3fz5s31b8Q90m8ePTC686qVqIHS7eXw0o9DbOAbaORbQAPfVD7+bCPXPTmDw7vn\n85szDtOFCZL0lCziLdYGvm6dnWV16sZi+yaY9eSuXS9Z+dCue2Q+pgY+WDeJGvimsn5LBZcXFZOT\nmcb4C4fqeQ7SKihZ1GefG/jasj1o4LGoq0yir2LJ+PxKleirVr5QN6rOhnkwLoHHQFqwyuoavvfY\nNFZt3METY4+iS15W2CGJNIukTxbuvvsuguoqWLfoi4khJnvbwNfT2Js1yRF8PJ98KHDbP+fy7qK1\n/P6cwxnco33Y4Yg0m6ROFllZWaxdu5aOHTs2nDDMQm/gm4q7s3btWrKydLQbD09MXcpD737Kpcf1\n5qyh3RpfQSSJJHWy6NatG6WlpZSVlcVQuzLu8TSHrKwsunVTQ9bUSpas46bnPuLLfQu44ZRmvnJN\npAVI6mSRnp5O7966pFH2zYrybVwxcRpd89twz6ghpKW2zNsxiMRTUicLkX21vbKaKyaWsL2ymscv\nP5J22elhhyQSCiULkQa4Oz99ehYfrdjAhAsL6dslN+yQREKj82mRBvzt7cU8P2MF13/9EL46oEvY\n4YiESslCpB5TPl7Nb1/5mG8O2p/vHn9Q2OGIhE7JQqSORWWb+f7j0+m/Xx53nj1It/IQQclCZBcb\ntlVy+cPFZKSlMOGiQrIzNKwnAhrgFtmpusb5/uPTWbpuK49dfhRd89uEHZJIi6FkIRK489WPeWt+\nGbedcSjDencIOxyRFkXdUCLAc9OX87e3FjP6qB5ccGTPsMMRaXGULKTVm1Vazk+fnsWw3h34xWkD\nww5HpEVSspBWbfWm7YwtKqEgJ5O/XjCEdN3KQ6ReGrOQVmtHVTVXTixhw7ZKnr7qGDrmZIYdkkiL\npWQhrZK78/PnPmLa0nLuPX8IAw7ICzskkRZN59zSKj387qc8WVzKNSf24RuD9g87HJEWT8lCWp3/\nLlzDr/85l68N6MIPv3pw2OGIJIS4JgszG2Fm88xsoZmNq2d5TzN73cxmmdmbZtYtalkPM/uXmc01\nszlm1iuesUrrsHTtVr732DQO6tSWP5x7BCkpupWHSCzilizMLBW4FzgFGACMMrMBdardBRS5+yDg\nFuD2qGVFwO/cvT8wDFgdr1ilddi8o4rLiqbiDhPGFJKTqSE7kVjF88xiGLDQ3Re7ewUwCRhZp84A\n4I1gekrt8iCppLn7awDuvtndt8YxVklyNTXOdU/MYFHZFu49fwg9O7YNOySRhBLPZNEVWBY1XxqU\nRZsJnBlMnwHkmllH4GCg3MyeMbPpZva74ExlF2Y21syKzaw4tudsS2t19+sL+NecVdx4an+O61sQ\ndjgiCSfsAe7rgeFmNh0YDiwHqolc0vvlYPmXgAOBi+uu7O7j3b3Q3Qs7derUbEFLYnn5w5X86fUF\nnD20G5cc2yvscEQSUjyTxXKge9R8t6BsJ3df4e5nuvtg4MagrJzIWciMoAurCngOGBLHWCVJzV25\nkeuenMngHvncdsahejaFyF6KZ7KYCvQ1s95mlgGcB7wQXcHMCsysNoYbgAei1s03s9rThROBOXGM\nVZLQui0VXF5UTF6bNP42eiiZaV/oyRSRGMUtWQRnBFcDrwJzgSfdfbaZ3WJmpwfVjgfmmdl8oAtw\nW7BuNZEuqNfN7EPAgAnxilWST2V1Dd99tITVm3Yw/sJCOudlhR2SSEKL67WD7v4S8FKdspujpicD\nkxtY9zVgUDzjk+T163/M4f3F6/jDuYdzePf8sMMRSXhhD3CLNLnHP1hK0XtLGPuVAzljcLfGVxCR\nRilZSFKZ+uk6bn7+I75ycCd+OqJf2OGIJA0lC0kay8u3ceXEErq1z+bP5w0mVbfyEGkyShaSFLZV\nVDO2qJiKqhomjCmkXXZ62CGJJBXdHEcSnrvz48kzmbNyI/dfVEifzjlhhySSdHRmIQnvr28t4h+z\nVvLjkw/hxH5dwg5HJCkpWUhCe33uKn736jxOP/wArhp+UNjhiCQtJQtJWAtXb+LaSTMYeEAevz1r\nkG7lIRJHShaSkDZsreTyohKy0lMYf2EhbTJ0Kw+ReNIAtySc6hrnmknTKV2/lccvP4oD8tuEHZJI\n0lOykIRzx8tzeXt+GbefeRiFvTqEHY5Iq6BuKEkoz0wrZcJ/PmHM0T0ZNaxH2OGItBpKFpIwZiwr\nZ9wzH3L0gR35+TfrPs5dROJJyUISwuqN27liYjGdczO594IhpKfqqyvSnDRmIS3e9spqxk4sYdP2\nKp6+6hg6tM0IOySRVkfJQlo0d+em5z5ixrJy7hs9hP7754UdkkirpHN5adEe+O+nTC4p5dqT+jLi\n0P3DDkek1VKykBbrPwvKuO2fczh5YBeuPalv2OGItGpKFtIifbpmC1c/Np2+nXP5v28fQYqeTSES\nKiULaXE2ba/k8qJizGDCmELaZmpoTSRs+l8oLUpNjfPDJ2aweM0WJn5nGD06ZocdkoigMwtpYf7w\n7/n8e+5qfv6N/hzTpyDscEQkoGQhLcY/Z63kz28s5NzC7lx0TK+wwxGRKEoW0iLMXrGB65+aydCe\n7bnlWwP1bAqRFkbJQkK3dvMOxhaVkJ+dzl9HDyEzTc+mEGlpGk0WZnaNmbVvjmCk9amoquGqR6ex\nZvMO/nbhUDrnZoUdkojUI5Yziy7AVDN70sxGmPoHpAn96sXZfPDJOu48exCDuuWHHY6INKDRZOHu\nNwF9gfuBi4EFZvYbMzsozrFJknvk/SU8+r+lXDH8QEYe0TXscERkN2Ias3B3Bz4LXlVAe2Cymd25\nu/WCM5F5ZrbQzMbVs7ynmb1uZrPM7E0z61ZneZ6ZlZrZPTF/IkkI/1u8ll++MJvjD+nET07uF3Y4\nItKIWMYsrjWzEuBO4L/AYe5+FTAUOGs366UC9wKnAAOAUWZW94k1dwFF7j4IuAW4vc7yXwNvx/hZ\nJEGUrt/KVY9Oo0fHbP543mBSdSsPkRYvljOLDsCZ7n6yuz/l7pUA7l4DfHM36w0DFrr7YnevACYB\nI+vUGQC8EUxPiV5uZkOJjJf8K6ZPIglha0UVY4tKqKyuYcKYQtq1SQ87JBGJQSzJ4mVgXe1M0DV0\nJIC7z93Nel2BZVHzpUFZtJnAmcH0GUCumXU0sxTg98D1McQnCcLd+fFTs5j72Ub+NGowB3XKCTsk\nEYlRLMnir8DmqPnNQVlTuB4YbmbTgeHAcqAa+C7wkruX7m5lMxtrZsVmVlxWVtZEIUm83DtlIf/8\ncCXjRvTjhEM6hx2OiOyBWG4kaMEANxDpfjKzWNZbDnSPmu8WlO3k7isIzizMLAc4y93Lzexo4Mtm\n9l0gB8gws83uPq7O+uOB8QCFhYWOtFivzVnFXf+az7eOOICxXzkw7HBEZA/Fcmax2My+b2bpweta\nYHEM600F+ppZbzPLAM4DXoiuYGYFQZcTwA3AAwDufoG793D3XkTOPorqJgpJHAtWbeKHT8xgULd2\n3HHWIN3KQyQBxZIsrgSOIXJWUAocCYxtbCV3rwKuBl4F5gJPuvtsM7vFzE4Pqh0PzDOz+UQGs2/b\n408gLVr51gouKyomKz2Vv104lKx03cpDJBFZVA9TQissLPTi4uKww5AoVdU1XPzgVD74ZB2Pjz2S\noT07hB2SiNRhZiXuXthYvUbHHswsC7gUGAjsvHGPu39nnyKUpHf7yx/zzsI13HnWICUKkQQXSzfU\nRGA/4GTgLSID1ZviGZQkvsklpdz/zidcfEwvvv2l7o2vICItWizJoo+7/xzY4u4PA98gMm4hUq9p\nS9fzs2c+5JiDOnLjN/qHHY6INIFYkkVl8G+5mR0KtAN0kbzUa9XG7Vw5sYT92mVx7/lDSE/VI1NE\nkkEsv5cYHzzP4iYil77mAD+Pa1SSkLZXVjN2Ygmbd1Qx8dIjad82I+yQRKSJ7DZZBL+B2Oju64nc\n0E+/ppJ6uTs/e+ZDZi4r577RQzlkv9ywQxKRJrTbPoLgZoE/aaZYJIHd/84nPDN9OT/86sGMOHS/\nsMMRkSYWS4fyv83sejPrbmYdal9xj0wSxlvzy/jNS3M55dD9uObEPmGHIyJxEMuYxbnBv9+LKnPU\nJSXAJ2u2cM1j0zi4Sy53nXM4KXo2hUhSajRZuHvv5ghEEs+m7ZVc9vBUUlOMCWMKaZsZy7GHiCSi\nWH7BPaa+cncvavpwJFFU1zg/mDSDT9du5ZFLj6R7h+ywQxKROIrlUPBLUdNZwEnANEDJohX7/b/m\n8frHq7ll5ECOPqhj2OGISJzF0g11TfS8meUTeUSqtFIvzlzBX95cxKhh3bnwqJ5hhyMizWBvfl67\nBdA4Riv10fIN/HjyTAp7tudXpx+qZ1OItBKxjFm8SOTqJ4gklwHAk/EMSlqmsk07GFtUTIfsDP46\neigZabqVh0hrEcuYxV1R01XAksaejS3Jp6Kqhu8+WsK6rRVMvvIYOuVmhh2SiDSjWJLFUmClu28H\nMLM2ZtbL3T+Na2TSYrg7v3hhNlM/Xc+fRg3m0K7twg5JRJpZLP0ITwE1UfPVQZm0Eo+8v4THP1jK\nVccfxOmHHxB2OCISgliSRZq7V9TOBNO6nWgr8d6itfzqxTmc2K8z13/9kLDDEZGQxJIsyszs9NoZ\nMxsJrIlfSNJSLFu3le89No2eHbO5+7wjSNWtPERarVjGLK4EHjWze4L5UqDeX3VL8tiyo4rLi4qp\nrK5hwphC8rLSww5JREIUy4/yFgFHmVlOML857lFJqGpqnOufmsn8VZt48JJhHNgpJ+yQRCRkjXZD\nmdlvzCzf3Te7+2Yza29mtzZHcBKOe6Ys5OWPPuOGU/oz/OBOYYcjIi1ALGMWp7h7ee1M8NS8U+MX\nkoTp1dmf8X+vzefMwV257Mv6ob6IRMSSLFLNbOcvsMysDaBfZCWheZ9t4ronZnB4t3b85szDdCsP\nEdkplgHuR4HXzexBwICLgYfjGZQ0v/VbKrisaCptM9P424WFZKWnhh2SiLQgsQxw/9bMZgJfJXKP\nqFcB3Wo0iVRV13D149NYtWEHk644iv3aZYUdkoi0MLHeCW4VkURxDnAiMDduEUmzu/Wfc/nvwrXc\ndsahDOnRPuxwRKQFavDMwswOBkYFrzXAE4C5+wnNFJs0gyenLuOhdz/lO8f25pzC7mGHIyIt1O7O\nLD4mchbxTXc/zt3/TOS+UDEzsxFmNs/MFprZuHqW9zSz181slpm9aWbdgvIjzOw9M5sdLDt3T95X\nYlOyZD03PfcRx/Up4Gen9gs7HBFpwXaXLM4EVgJTzGyCmZ1EZIA7JmaWCtwLnELkGRijzGxAnWp3\nAUXuPgi4Bbg9KN8KjHH3gcAI4O7gCX3SRFZu2MYVE0vYPz+Le84fTFqqnk0hIg1rsIVw9+fc/Tyg\nHzAF+AHQ2cz+amZfj2Hbw4CF7r44uPngJGBknToDgDeC6Sm1y919vrsvCKZXAKsB/TqsiWyvrOaK\niSVsq6hiwphC8rN1X0gR2b1GDyfdfYu7P+bupwHdgOnAT2PYdldgWdR8aVAWbSaRMxiAM4BcM+sY\nXcHMhhG5y+2ium9gZmPNrNjMisvKymIISdydcU/PYlbpBu4+bzAHd8kNOyQRSQB71Pfg7uvdfby7\nn9RE7389MNzMpgPDgeVEjYuY2f7AROASd6+pu3IQS6G7F3bqpBOPWIx/ezHPzVjBj752MF8b0CXs\ncEQkQcTyo7y9tRyIvrymW1Dob1BiAAARq0lEQVS2U9DFdCZAcKPCs2pvLWJmecA/gRvd/f04xtlq\nvDlvNXe88jHfOGx/rj6xT9jhiEgCieeo5lSgr5n1NrMM4DzghegKZlZgZrUx3AA8EJRnAM8SGfye\nHMcYW41FZZu55vHp9Nsvj9+dM0i38hCRPRK3ZOHuVcDVRH7xPRd40t1nm9ktUQ9TOh6YZ2bzgS7A\nbUH5t4GvABeb2YzgdUS8Yk12G7dXcnlRMempKUwYM5TsjHieUIpIMjJ3DzuGJlFYWOjFxcVhh9Hi\nVNc4lz08lf8sWMOjlx3JkQd2bHwlEWk1zKzE3Qsbq6dDzCT3u1fnMWVeGbd+61AlChHZa/olVhJ7\nfsZy7ntrEecf2YPRR+nejyKy95QsktSs0nJ+MnkWw3p14JenDQw7HBFJcEoWSWj1pu1cMbGEgpxM\n/jJ6CBlp+jOLyL7RmEWS2VFVzVWPTGP91gqevuoYCnL0UEMR2XdKFknE3bn5udmULFnPPecPZuAB\n7cIOSUSShPonkkjRe0t4ongZV5/Qh28OOiDscEQkiShZJIl3F67hln/M4av9O3Pd1w4OOxwRSTJK\nFklg6dqtfPexaRxY0JY/nHsEKSm6lYeINC0liwS3ZUcVlxcVU1PjTBhTSG5WetghiUgS0gB3Aqup\nca57cgYLVm/ioUuG0augbdghiUiS0plFAvvj6wt4dfYqfnZqf75ysJ7nISLxo2SRoF75aCV/fH0B\nZw3pxqXH9Q47HBFJckoWCejjzzZy3ZMzOaJ7PredcaieTSEicadkkWDWbangsoeLyclM428XDiUr\nPTXskESkFdAAdwKprK7he49OY/WmHTx5xdF0ycsKOyQRaSV0ZpFAbv3HHN5bvJbbzziMI7rnhx2O\niLQiShYJYtIHS3n4vSVcdlxvzhraLexwRKSVUbJIAMWfruPnz3/El/sWMO6UfmGHIyKtkJJFC7ei\nfBtXPlJC1/w23DNqCGmp+pOJSPPTAHcLtq2imrETi9leWcOksYW0y9atPEQkHEoWLZS789OnZzF7\nxUb+PqaQPp1zww5JRFox9Wm0UPe9tZgXZq7g+q8fwkn9u4Qdjoi0ckoWLdAbH6/izlc/5puD9ue7\nxx8UdjgiIkoWLc3C1Zu49vEZDNg/j9+dfbhu5SEiLYKSRQuyYVsllxeVkJGWwvgxhbTJ0K08RKRl\n0AB3C1Fd43z/8emUrt/Ko5cdRdf8NmGHJCKyk5JFC/HbVz7mrfll/OaMwxjWu0PY4YiI7CKu3VBm\nNsLM5pnZQjMbV8/ynmb2upnNMrM3zaxb1LKLzGxB8LoonnGG7dnppYx/ezEXHtWT84/sEXY4IiJf\nELdkYWapwL3AKcAAYJSZDahT7S6gyN0HAbcAtwfrdgB+ARwJDAN+YWbt4xVrmGYuK+enT3/Ikb07\ncPNpdXePiEjLEM8zi2HAQndf7O4VwCRgZJ06A4A3gukpUctPBl5z93Xuvh54DRgRx1hDsXrjdsZO\nLKZTTiZ/uWAI6bqVh4i0UPFsnboCy6LmS4OyaDOBM4PpM4BcM+sY47qY2VgzKzaz4rKysiYLvDns\nqKrmikdK2LitigljCumYkxl2SCIiDQr7UPZ6YLiZTQeGA8uB6lhXdvfx7l7o7oWdOnWKV4xNzt25\n6dmPmL60nN9/+3AGHJAXdkgiIrsVz6uhlgPdo+a7BWU7ufsKgjMLM8sBznL3cjNbDhxfZ9034xhr\ns3rwv5/yVEkp3z+xD6cetn/Y4YiINCqeZxZTgb5m1tvMMoDzgBeiK5hZgZnVxnAD8EAw/SrwdTNr\nHwxsfz0oS3jvLFjDbS/N5WsDuvCDrx4cdjgiIjGJW7Jw9yrgaiKN/FzgSXefbWa3mNnpQbXjgXlm\nNh/oAtwWrLsO+DWRhDMVuCUoS2hL1m7he49N46BObfnDuUeQkqJbeYhIYjB3DzuGJlFYWOjFxcVh\nh9GgzTuqOPMv/2X1ph08/71j6dmxbdghiYhgZiXuXthYPf2CuxnU1Dg/fGIGi8q2UPSdYUoUIpJw\nwr4aqlW4+9/zeW3OKm48tT/H9ikIOxwRkT2mZBFn/5y1kj+9sZBzhnbjkmN7hR2OiMheUbKIozkr\nNnL9UzMZ0iOfW884VM+mEJGEpWQRJ2s37+DyomLatUnnvtFDyUzTsylEJHFpgDsOKqtr+O6j0yjb\nvIOnrjiaznlZYYckIrJPdGYRB796cTb/+2Qdd541iMO754cdjojIPlOyaGKP/m8Jj7y/lCu+ciDf\nGvyFex+KiCQkJYsm9MEn6/jF87MZfnAnfjKiX9jhiIg0GSWLJlK6fitXPVJCjw7Z/GnUYFJ1Kw8R\nSSJKFk1gW0U1Y4tKqKiqYfyYQtq1SQ87JBGRJqWrofaRu/PjyTOZ+9lGHrjoS/TpnBN2SCIiTU5n\nFvvoL28u4h+zVvKTk/txQr/OYYcjIhIXShb74N9zVnHXv+Zx+uEHcOXwA8MOR0QkbpQs9tKCVZv4\nwRMzGHhAHr89a5Bu5SEiSU3JYi9s2FrJ5UXFZKWnMv7CQtpk6FYeIpLclCz2UFV1DVc/Po3l5du4\nb/QQDshvE3ZIIiJxp6uh9tAdL3/Mfxas4Y4zD6OwV4ewwxERaRY6s9gDT5eU8vd3PuGio3ty3rAe\nYYcjItJslCxiNH3pem549kOOPrAjN31zQNjhiIg0KyWLGKzauJ0rJpbQOTeTey8YQnqqdpuItC4a\ns2jE9spqxk4sYfOOKp659Bg6tM0IOyQRkWanZLEb7s6Nz37EzGXl3Dd6CP32yws7JBGRUKg/ZTfu\nf+cTnp5WyrUn9WXEofuHHY6ISGiULBrw9vwyfvPSXE4e2IVrT+obdjgiIqFSsqjHJ2u2cPVj0+jb\nOZf/+/YRpOjZFCLSyilZ1LFpe+RWHikpxoQxhbTN1LCOiIhawig1Nc4Pn5jBJ2u2MPE7w+jRMTvs\nkEREWoS4nlmY2Qgzm2dmC81sXD3Le5jZFDObbmazzOzUoDzdzB42sw/NbK6Z3RDPOGv9/rV5/Hvu\nam7+5gCO6VPQHG8pIpIQ4pYszCwVuBc4BRgAjDKzuj99vgl40t0HA+cBfwnKzwEy3f0wYChwhZn1\nilesAC/OXMG9UxZxbmF3xhzdM55vJSKScOJ5ZjEMWOjui929ApgEjKxTx4HaHy+0A1ZElbc1szSg\nDVABbIxXoB8t38CPJ89kaM/23PKtgXo2hYhIHfFMFl2BZVHzpUFZtF8Co82sFHgJuCYonwxsAVYC\nS4G73H1d3Tcws7FmVmxmxWVlZXsV5JrNOxhbVEz77AzuGz2UzDQ9m0JEpK6wr4YaBTzk7t2AU4GJ\nZpZC5KykGjgA6A38yMy+8NxSdx/v7oXuXtipU6e9CiAtxRhwQB7jLyykU27mXn8QEZFkFs+roZYD\n3aPmuwVl0S4FRgC4+3tmlgUUAOcDr7h7JbDazP4LFAKLmzrI/OwM/n7Rl5p6syIiSSWeZxZTgb5m\n1tvMMogMYL9Qp85S4CQAM+sPZAFlQfmJQXlb4Cjg4zjGKiIiuxG3ZOHuVcDVwKvAXCJXPc02s1vM\n7PSg2o+Ay81sJvA4cLG7O5GrqHLMbDaRpPOgu8+KV6wiIrJ7FmmbE19hYaEXFxeHHYaISEIxsxJ3\nL2ysXtgD3CIikgCULEREpFFKFiIi0iglCxERaZSShYiINCpproYyszJgyT5sogBY00ThNCXFtWcU\n155RXHsmGePq6e6N3gIjaZLFvjKz4lguH2tuimvPKK49o7j2TGuOS91QIiLSKCULERFplJLF58aH\nHUADFNeeUVx7RnHtmVYbl8YsRESkUTqzEBGRRilZiIhIo5I+WZjZCDObZ2YLzWxcPcszzeyJYPn/\nzKxX1LIbgvJ5ZnZyM8d1nZnNMbNZZva6mfWMWlZtZjOCV91nhMQ7rovNrCzq/S+LWnaRmS0IXhc1\nc1x/iIppvpmVRy2L5/56wMxWm9lHDSw3M/tTEPcsMxsStSye+6uxuC4I4vnQzN41s8Ojln0alM8w\nsya9lXMMcR1vZhui/l43Ry3b7XcgznH9OCqmj4LvVIdgWTz3V3czmxK0BbPN7Np66jTPd8zdk/YF\npAKLgAOBDGAmMKBOne8C9wXT5wFPBNMDgvqZRB7tughIbca4TgCyg+mrauMK5jeHuL8uBu6pZ90O\nRJ5k2AFoH0y3b6646tS/Bngg3vsr2PZXgCHARw0sPxV4GTAiD/H6X7z3V4xxHVP7fsAptXEF858C\nBSHtr+OBf+zrd6Cp46pT9zTgjWbaX/sDQ4LpXGB+Pf8nm+U7luxnFsOAhe6+2N0rgEnAyDp1RgIP\nB9OTgZPMzILySe6+w90/ARYG22uWuNx9irtvDWbfJ/JY2niLZX815GTgNXdf5+7rgdcIHpkbQlyj\niDxMK+7c/W1g3W6qjASKPOJ9IN/M9ie++6vRuNz93eB9ofm+X7Hsr4bsy3ezqeNqzu/XSnefFkxv\nIvIgua51qjXLdyzZk0VXYFnUfClf3NE763jk6X4bgI4xrhvPuKJdSuTIoVaWmRWb2ftm9q0mimlP\n4jorON2dbGa1z1lvEfsr6K7rDbwRVRyv/RWLhmKP5/7aU3W/Xw78y8xKzGxsCPEcbWYzzexlMxsY\nlLWI/WVm2UQa3Kejiptlf1mki3ww8L86i5rlO5a2tytK8zCz0UAhMDyquKe7LzezA4E3zOxDd1/U\nTCG9CDzu7jvM7AoiZ2UnNtN7x+I8YLK7V0eVhbm/WjQzO4FIsjguqvi4YH91Bl4zs4+DI+/mMI3I\n32uzmZ0KPAf0bab3jsVpwH/dPfosJO77y8xyiCSoH7j7xqbcdqyS/cxiOdA9ar5bUFZvHTNLA9oB\na2NcN55xYWZfBW4ETnf3HbXl7r48+Hcx8CaRo41micvd10bF8ndgaKzrxjOuKOdRp4sgjvsrFg3F\nHs/9FRMzG0TkbzjS3dfWlkftr9XAszRd92uj3H2ju28Opl8C0s2sgBawvwK7+37FZX+ZWTqRRPGo\nuz9TT5Xm+Y7FY1CmpbyInDktJtItUTsoNrBOne+x6wD3k8H0QHYd4F5M0w1wxxLXYCIDen3rlLcH\nMoPpAmABTTTQF2Nc+0dNnwG8758Ppn0SxNc+mO7QXHEF9foRGWy05thfUe/Ri4YHbL/BroOPH8R7\nf8UYVw8i43DH1ClvC+RGTb8LjGjGuPar/fsRaXSXBvsupu9AvOIKlrcjMq7Rtrn2V/DZi4C7d1On\nWb5jTbajW+qLyJUC84k0vDcGZbcQOVoHyAKeCv7jfAAcGLXujcF684BTmjmufwOrgBnB64Wg/Bjg\nw+A/y4fApc0c1+3A7OD9pwD9otb9TrAfFwKXNGdcwfwvgTvqrBfv/fU4sBKoJNInfClwJXBlsNyA\ne4O4PwQKm2l/NRbX34H1Ud+v4qD8wGBfzQz+zjc2c1xXR32/3icqmdX3HWiuuII6FxO56CV6vXjv\nr+OIjInMivpbnRrGd0y3+xARkUYl+5iFiIg0ASULERFplJKFiIg0SslCREQapWQhIiKNUrIQ2QN1\n7mA7oynvfmpmvRq666lI2HS7D5E9s83djwg7CJHmpjMLkSYQPNPgzuC5Bh+YWZ+gvJeZvWGfP5ek\nR1DexcyeDW6YN9PMjgk2lWpmE4JnF/zLzNqE9qFEoihZiOyZNnW6oc6NWrbB3Q8D7gHuDsr+DDzs\n7oOAR4E/BeV/At5y98OJPEdhdlDeF7jX3QcC5cBZcf48IjHRL7hF9oCZbXb3nHrKPwVOdPfFwY3f\nPnP3jma2hsj9tCqD8pXuXmBmZUA3j7pBZHAL6tfcvW8w/1Mg3d1vjf8nE9k9nVmINB1vYHpP7Iia\nrkbjitJCKFmINJ1zo/59L5h+l8jdjAEuAP4TTL9O5HG5mFmqmbVrriBF9oaOWkT2TBszmxE1/4q7\n114+297MZhE5OxgVlF0DPGhmPwbKgEuC8muB8WZ2KZEziKuI3PVUpEXSmIVIEwjGLArdfU3YsYjE\ng7qhRESkUTqzEBGRRunMQkREGqVkISIijVKyEBGRRilZiIhIo5QsRESkUf8P3q9j6FVJ24oAAAAA\nSUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TiVplNxISkR6",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 225
        },
        "outputId": "c5b739a2-6e11-44f7-84c4-ac0a82bcde79"
      },
      "source": [
        "#Show predictions as probabilites for the first 4 images in the test set\n",
        "predictions = model.predict(X_test[:4])\n",
        "predictions"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[1.34177355e-07, 2.48542209e-09, 8.91900864e-09, 9.77532750e-07,\n",
              "        6.71991271e-13, 5.89210902e-11, 6.14161825e-13, 9.99998927e-01,\n",
              "        3.00458569e-09, 4.02709599e-09],\n",
              "       [6.14337750e-06, 1.04692994e-07, 9.99898434e-01, 5.43854867e-06,\n",
              "        4.74248252e-10, 7.02491190e-11, 8.21188223e-05, 1.48188725e-10,\n",
              "        7.57780845e-06, 1.40203557e-10],\n",
              "       [2.35221000e-06, 9.98755455e-01, 5.15569263e-06, 1.32248923e-09,\n",
              "        8.23073151e-06, 4.68670260e-06, 1.06355637e-05, 5.41945262e-08,\n",
              "        1.21341727e-03, 6.27768459e-09],\n",
              "       [9.99935389e-01, 4.53953021e-11, 1.37671577e-07, 1.21291833e-12,\n",
              "        2.59405852e-09, 1.30445734e-08, 6.43264575e-05, 4.99175978e-11,\n",
              "        6.86783475e-09, 1.68532097e-07]], dtype=float32)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6K1QJ_zITMI_",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        },
        "outputId": "20c2c2c2-e5b5-4a1a-ab90-fc975f69ce95"
      },
      "source": [
        "#Print our predicitons as number labels for the first 4 images\n",
        "print( np.argmax(predictions, axis=1))\n",
        "#Print the actual labels\n",
        "print(y_test[:4])"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[7 2 1 0]\n",
            "[7 2 1 0]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bJwj9AmdTloe",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "360dc444-fce7-4101-ad2d-7144f6c57be4"
      },
      "source": [
        "#Show the first 4 images as pictures\n",
        "for i in range(0,4):\n",
        "  image = X_test[i]\n",
        "  image = np.array(image, dtype='float')\n",
        "  pixels = image.reshape((28,28))\n",
        "  plt.imshow(pixels, cmap='gray')\n",
        "  plt.show()"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n8ANJEX4gKcIPJEX4gaQIP5CU+znEsm3GcwZ6LCKmuzT/Mez5gaQIP5AU4QeSIvxAUoQfSIrwA0kR\nfiCpfg/R/VdJf5ny/LPVtEE0qL0Nal8SvbWrm71d3uqMff2Qz8c2bo8N6nf7DWpvg9qXRG/tqqs3\nDvuBpAg/kFTd4R+tefslg9rboPYl0Vu7aumt1nN+APWpe88PoCa1hN/2Mtv7bB+w/UAdPTRi+7Dt\nXbZfrXuIsWoYtJO2d0+ZNs/2s7bfqn5PO0xaTb2ts320eu1etb28pt4W2P6j7Tds77H97Wp6ra9d\noa9aXre+H/bbniVpv6Q7JI1LelnSvRHxRl8bacD2YUnDEVH7NWHbX5J0RtIjEXFNNe0hSRMR8cPq\nH+fciPjegPS2TtKZukdurgaUGZo6srSkuyR9QzW+doW+7lENr1sde/4bJR2IiEMR8XdJv5a0ooY+\nBl5EbJd07qgZKyRtrB5v1OQfT9816G0gRMSxiHilenxa0kcjS9f62hX6qkUd4b9U0pEpz8c1WEN+\nh6SttnfaHqm7mWnMr4ZNl6TjkubX2cw0mo7c3E/njCw9MK9dOyNedxtv+H3ckoi4TtL/SVpTHd4O\npJg8ZxukyzUtjdzcL9OMLP0vdb527Y543W11hP+opAVTnn+umjYQIuJo9fukpN9p8EYfPvHRIKnV\n75M19/MvgzRy83QjS2sAXrtBGvG6jvC/LOkK25+3/WlJX5O0pYY+Psb2hdUbMbJ9oaQva/BGH94i\naVX1eJWkJ2rs5T8MysjNjUaWVs2v3cCNeB0Rff+RtFyT7/gflPT9Onpo0Nd/S3qt+tlTd2+SHtXk\nYeA/NPneyDclXSRpm6S3JP1B0rwB6u1XknZJel2TQRuqqbclmjykf13Sq9XP8rpfu0JftbxufMIP\nSIo3/ICkCD+QFOEHkiL8QFKEH0iK8ANJEX4gKcIPJPVP82g/p9/JjhUAAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nmdmZkl6S9Ii7rzWzHkmHJLmkn6txavCDJuvgsB9os1YP+1sKv5lNkvS8pA3u/ptx6tMlPe/ulzZZ\nD+EH2qyyATzNzCQ9LumtscHP3ggctUDSGyfbJID6tPJu/2xJmyS9LulEtnippEWSrlDjsH9I0o+z\nNwdT62LPD7RZpYf9VSH8QPsxbj+AJMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiB\noAg/EBThB4Ii/EBQTQfwrNghSXvH3P9qtqwbdWtv3dqXRG9FVdnbN1p9YEe/z/+FjZsNuntfbQ0k\ndGtv3dqXRG9F1dUbh/1AUIQfCKru8C+vefsp3dpbt/Yl0VtRtfRW6zk/gPrUvecHUJNawm9mN5rZ\n22a228weqKOHPGY2ZGavZzMP1zrFWDYN2oiZvTFm2RQz+5uZvZv9HneatJp664qZmxMzS9f62nXb\njNcdP+w3s9MkvSPpekn7JG2TtMjd3+xoIznMbEhSn7vXfk3YzL4t6aikVaOzIZnZLyUddvdfZP84\nz3H3+7ukt4d1kjM3t6m3vJmlv68aX7sqZ7yuQh17/qsl7Xb399z935L+KGl+DX10PXd/WdLhzy2e\nL2lldnulGn88HZfTW1dw92F3fzW7fUTS6MzStb52ib5qUUf4z5X0wZj7+9RdU367pL+a2Stm1l93\nM+PoGTMz0gFJPXU2M46mMzd30udmlu6a167IjNdV4w2/L5rt7rMkfU/ST7LD267kjXO2brpcs0zS\nDDWmcRuW9Os6m8lmlh6QdJe7fzy2VudrN05ftbxudYR/v6Tzxtyfli3rCu6+P/s9IukZNU5TusnB\n0UlSs98jNffzX+5+0N2Pu/sJSY+pxtcum1l6QNLv3X1ttrj21268vup63eoI/zZJF5nZ+WY2WdJC\nSetr6OMLzOyM7I0YmdkZkuao+2YfXi9pcXZ7saRna+zl/3TLzM15M0ur5teu62a8dveO/0i6SY13\n/PdI+lkdPeT0dYGk17KfnXX3JulpNQ4DP1PjvZEfSpoqaaOkdyX9XdKULurtSTVmc96hRtB6a+pt\nthqH9Dskbc9+bqr7tUv0Vcvrxif8gKB4ww8IivADQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFD/Abw9\nWv8QfFP9AAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n/wNRj+er2ohshAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nk3yA0rV6ks8XWljRmKSx7PbHZjYi6cLO2gNQtTN6z29mcyUtlPT3bNG9ZvaKmW01s/OaPKfPzIbM\nbKijTgEUquVz+83sXEl/lfQzd3/azGZJOiLJJf1UjbcGd+asg8N+oGStHva3FH4zO0fSdknPufvG\nSepzJW1398tz1kP4gZIVdmGPNb6e9TFJIxODn30QOO4mSa+daZMAqtPKp/2LJf1N0quSxueCXifp\nNklXqHHYPyppdfbhYGpd7PmBkhV62F8Uwg+Uj+v5ASQRfiAowg8ERfiBoAg/EBThB4Ii/EBQhB8I\nivADQRF+ICjCDwRF+IGgCD8QFOEHgsr9As+CHZG0b8L9mdmyOqprb3XtS6K3dhXZ25xWH9jV6/lP\ne3GzIXfvrayBhLr2Vte+JHprV1W9cdgPBEX4gaCqDn9/xa+fUtfe6tqXRG/tqqS3St/zA6hO1Xt+\nABWpJPxmttTM3jCzt83sgSp6aMbMRs3s1Wzm4UqnGMumQTtsZq9NWHa+mf3ZzN7Kfk86TVpFvdVi\n5ubEzNKVbru6zXjd9cN+M5su6U1J10o6IOlFSbe5+3BXG2nCzEYl9bp75WPCZrZE0jFJj4/PhmRm\nD0s66u4/z/5wnufuP65Jbxt0hjM3l9Rbs5mlv68Kt12RM14XoYo9/yJJb7v7u+7+H0l/kLS8gj5q\nz913Szr6ucXLJQ1ktwfU+MfTdU16qwV3H3P3l7LbH0san1m60m2X6KsSVYT/Qkn/mnD/gOo15bdL\n2mlme82sr+pmJjFrwsxI70maVWUzk8idubmbPjezdG22XTszXheND/xOt9jdvylpmaQ12eFtLXnj\nPVudhms2S/q6GtO4jUn6ZZXNZDNLb5P0Q3f/aGKtym03SV+VbLcqwn9Q0sUT7l+ULasFdz+Y/T4s\n6Rk13qbUyaHxSVKz34cr7ud/3P2Qu59091OSfqMKt102s/Q2SU+4+9PZ4sq33WR9VbXdqgj/i5Iu\nNbNLzOyLklZKGqygj9OY2YzsgxiZ2QxJ16l+sw8PSlqV3V4l6dkKe/mMuszc3GxmaVW87Wo347W7\nd/1H0vVqfOL/jqT1VfTQpK+vSXo5+3m96t4kPanGYeAJNT4buUvSlyXtkvSWpL9IOr9Gvf1Ojdmc\nX1EjaLMr6m2xGof0r0j6R/ZzfdXbLtFXJduNM/yAoPjADwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeC\nIvxAUP8FAfaK+yOWZZUAAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    }
  ]
}
